Technology Tales

Adventures & experiences in contemporary technology

Language Log

5th February 2023

Much of what you find here once got strewn around the LinkBlog and Data Science Directory pages because I have taken to trying out new computing languages. R, Python and Julia were among those that were new to me, and I am curious about Go too. My way of learning often involves trying out things and finding out possible approaches from the web. This collation comes from those ongoing efforts. More may follow them.

20:47 April 17, 2024

The Many Ways to Exit in Python

15:20 March 14, 2024

Python Enum: How To Build Enumerations in Python

16:59 February 26, 2024

Python args and kwargs: Demystified

16:29 February 2, 2024

Usage NoteĀ 69994:Ā SASĀ® Life Science Analytics Framework 5.4.x -- Documenting various log and listing limits within the UI for each browser client

22:26 January 31, 2024

SAS Arrays and DO Loop Made Easy

23:19 January 29, 2024

How to End a Program in Python

19:53 July 4, 2023

LangChain

09:33 May 12, 2023

NodeSource Node.js Binary Distributions

14:01 May 11, 2023

Julia 1.9 Highlights

17:14 April 25, 2023

Find Command in Linux

14:51 April 23, 2023

Hugo: Shortcodes

11:06 April 15, 2023

PHP: apache_request_headers

11:06 April 15, 2023

How to get the current page URL in PHP?

11:05 April 15, 2023

PHP File Create/Write

11:04 April 15, 2023

PHP Date and Time

19:21 March 19, 2023

How to secure and protect WordPress through .htaccess File

19:20 March 19, 2023

Getting started: header-based access controls

13:52 March 9, 2023

Bash For Loop Examples

11:44 February 20, 2023

How to Back Up and Restore MySQL Databases with Mysqldump

14:28 February 12, 2023

MySQL Tutorial

18:20 February 10, 2023

Python: Get Number of Elements in a List

14:04 February 8, 2023

Perl Data Language

10:32 February 7, 2023

psutil

10:31 February 7, 2023

Python Progress Bar

10:30 February 7, 2023

Python multiprocessing ā€” Process-based parallelism

10:29 February 7, 2023

How to Keep Certain Columns in Pandas (With Examples)

10:28 February 7, 2023

Python Switch Statement ā€“ Switch Case Example

16:37 February 5, 2023

Python Dictionary Append: How to Add Key/Value Pair

16:36 February 5, 2023

Concatenate images with Python, Pillow

16:35 February 5, 2023

Python PIL | UnsharpMask() method

16:34 February 5, 2023

10 Python Image Manipulation Tools You Can Try Today

23:47 February 3, 2023

Python enumerate(): Simplify Looping With Counters

23:46 February 3, 2023

When to Use a List Comprehension in Python

23:44 February 3, 2023

How to return multiple values from a function in Python

23:43 February 3, 2023

Parallel For-Loop With a Multiprocessing Pool

23:42 February 3, 2023

Pandas ā€“ Create DataFrame From Multiple Series

23:41 February 3, 2023

How to run command or code in parallel in bash shell under Linux or Unix

23:39 February 3, 2023

How to Rename Columns in Pandas

23:28 February 3, 2023

Python: Iterate over multiple lists simultaneously

17:55 January 20, 2023

Python: Check if a File or Directory Exists

11:31 January 20, 2023

Lists in Groovy

16:49 December 17, 2022

Lambda Functions in Python

Lambda Calculus

13:18 November 30, 2022

One deadly sin SAS programmers should stop committing

11:38 November 21, 2022

Python Global Keyword

09:57 November 21, 2022

How to Convert Integers to Strings in Pandas DataFrame

18:14 November 19, 2022

5 Tricky SQL Queries Solved

17:00 October 27, 2022

CALL EXECUTE made easy for SAS data-driven programming

09:40 October 24, 2022

SAS NWKDOM Function

09:39 October 24, 2022

The JSON LIBNAME Engine: Real-World Applications Using Open APIs

09:37 October 21, 2022

Distinguishing SAS PROC MEANS, SUMMARY, TABULATE

09:35 October 21, 2022

Getting Started with Python Integration to SAS Viya

09:25 October 14, 2022

LEAVE and CONTINUE: Two ways to control the flow in a SAS DO loop

11:57 October 12, 2022

How to examine the status of ODS destinations in SAS

14:04 October 3, 2022

SASPy Configuration with SAS Analytics Pro Cloud Native

14:03 October 3, 2022

SASPy

14:03 October 3, 2022

SAS PYTHON Procedure

09:38 October 1, 2022

Configure SAS to Run External Languages

09:37 October 1, 2022

Linux / UNIX: Bash Script Sleep or Delay a Specified Amount of Time

12:05 September 29, 2022

SAS Processing Restrictions in a Locked-Down State

12:05 September 29, 2022

SAS Dev Ops with SASjs CLI

SASjs -- DevOps for SAS

Data Controller

Build Web Applications using SAS

slides.sasjs.io

SAS Apps

15:14 September 28, 2022

SAS_PACKAGES -- a SAS Packages Framework and Repository

17:01 September 27, 2022

SAS Mirror Manager for SAS Viya 3.4

17:00 September 27, 2022

SAS Mirror Manager for SAS Viya

12:41 September 16, 2022

Scala

18:06 August 24, 2022

Hello Shiny Python

18:05 August 24, 2022

Shiny for Python

11:54 August 20, 2022

Using Pandas with Python Decimal for accurate currency arithmetic

13:10 August 18, 2022

Julia 1.8 Highlights

12:56 August 13, 2022

Compiling a Custom Sysimage in Julia

15:34 July 29, 2022

DevOps with VS Code, GIT, and SASjs

15:33 July 29, 2022

SAS Dev Ops with SASjs CLI

15:33 July 29, 2022

Authentication to SAS Viya: a couple of approaches

18:33 July 21, 2022

Using cURL in Python with PycURL

15:54 July 8, 2022

FOSS4Spectroscopy: R vs Python

09:02 July 1, 2022

htmlwidgets for R

16:23 June 16, 2022

Python Check If File Exists

16:22 June 16, 2022

How to Convert Index to Column in Pandas DataFrame

16:22 June 16, 2022

Python ā€“ List Files in a Directory

16:21 June 16, 2022

Create an empty array in Python

14:35 June 15, 2022

Pandas Convert List of Dictionaries to DataFrame

14:55 April 27, 2022

Pharmaverse

10:21 April 4, 2022

Splitting string into array of substrings in Julia ā€“ split() and rsplit() Method

10:21 April 4, 2022

Arrays in Julia

10:20 April 4, 2022

For loop in Julia

19:30 March 27, 2022

How to Compare Strings in Bash

20:59 March 18, 2022

How to remove Scientific Notation in R

15:13 March 9, 2022

Complete tutorial on using ‘apply’ functions in R

15:24 March 8, 2022

How to Calculate a Cumulative Average in R

14:35 March 7, 2022

How To Get Twitter Data Using R

07:55 February 28, 2022

Good Practices: how to sanitize, validate and escape in PHP

09:15 February 24, 2022

How To Use Python-Markdown to Convert Markdown Text to HTML

11:07 February 21, 2022

R Error: Canā€™t rename columns that donā€™t exist.

11:06 February 21, 2022

Avoid loops in R! Really?

16:33 February 18, 2022

MySQL DELETE Query: How to Delete a Row from Table

11:06 February 18, 2022

MySQL Change a User Password Command Tutorial

10:39 February 18, 2022

How to Use the rename Command on Linux

15:48 February 16, 2022

Julia Programming: a Hands-on Tutorial

09:30 February 8, 2022

How to convert JSON into a Pandas DataFrame

22:06 January 29, 2022

DM

22:05 January 29, 2022

Connections

22:05 January 29, 2022

DBI

22:03 January 29, 2022

Tidyverts

22:03 January 29, 2022

Pillow

15:19 January 22, 2022

How to Save the Output of a Command to a File in Bash

21:09 January 16, 2022

Learn Julia For Beginners ā€“ The Future Programming Language of Data Science and Machine Learning Explained

14:22 January 16, 2022

R vs. Python vs. Julia

14:13 January 16, 2022

How to install NumPy package in Julia?

14:01 January 16, 2022

5 Julia Projects for Beginners ā€” Easy Ideas to Get Started Coding in Julia

13:58 January 16, 2022

6 Julia Frameworks to Create Desktop GUIā€™s and Web Apps

17:52 January 14, 2022

Handling Categorical Data in R -- Part 3

18:22 January 13, 2022

Handling Categorical Data in R -- Part 2

15:45 January 12, 2022

How To Connect R Shiny to Postgres Database

09:02 January 12, 2022

Select Rows Containing a Substring in Pandas DataFrame

13:16 January 11, 2022

Python Excel

12:15 January 10, 2022

Learn Shiny

12:08 January 10, 2022

Top 7 Best R Shiny Books and Courses That Are Completely Free

12:06 January 10, 2022

How renv restores packages from r-universe for reproducibility or production

12:04 January 10, 2022

Handling Categorical Data in R -- Part 1

13:58 January 8, 2022

Plotly Julia Library

13:18 January 8, 2022

Exception handling in Julia

09:49 January 8, 2022

New features in DataFrames.jl 1.3: Part 1

New features in DataFrames.jl 1.3: Part 2

New features in DataFrames.jl 1.3: Part 3

New features in DataFrames.jl 1.3: Part 4

New features in DataFrames.jl 1.3: Conclusion

15:41 December 25, 2021

DataFrames.jl minilanguage explained

15:39 December 25, 2021

Tips to create beautiful, publication-quality plots in Julia

14:38 December 25, 2021

One thousand and one stories in Julia

11:39 December 25, 2021

DTable ā€“ an early performance assessment of a new distributed table implementation

18:08 December 24, 2021

Working with Date and Time in Julia

18:07 December 24, 2021

Descriptive Statistics in Julia

17:54 December 24, 2021

Choosing how to store your strings in Julia

17:38 December 23, 2021

Clip your data with ClipData.jl

13:58 December 23, 2021

Animated Unicode Plots with Julia

13:56 December 23, 2021

Speeding up Julia precompilation

13:55 December 23, 2021

Makie

10:34 December 23, 2021

Plotting in Julia with Makie

10:31 December 23, 2021

Welcome to DataFramesMeta.jl

11:45 December 12, 2021

Getting Started with Python in VS Code

17:07 December 10, 2021

Hyndsight

17:05 December 10, 2021

Using R With Python, Tableau, and Other Tools

17:01 December 10, 2021

Learn Data Science with R

16:58 December 10, 2021

Tuesday Free R-Tips Newsletter

13:38 December 7, 2021

Lua

16:54 December 2, 2021

Most Common SQL Mistakes on Data Science Interviews

14:45 November 30, 2021

juliabloggers.com

16:04 November 29, 2021

Publication-ready tables with flextable and own theme in R

15:15 November 28, 2021

Comparing two data frames in R

15:13 November 28, 2021

Read CSV to Data Frame in Julia

15:12 November 28, 2021

Julia in VS Code

15:10 November 28, 2021

Julia language: a concise tutorial

15:10 November 28, 2021

Is case_when needed in DataFrames.jl?

15:09 November 28, 2021

DataFrames.jl: why do we have both subset and filter functions?

15:08 November 28, 2021

Julia DataFrames.jl Basics

15:08 November 28, 2021

Julia Documentation

15:07 November 28, 2021

Julia 1.6 Documentation

15:06 November 28, 2021

First-Class Statistical Missing Values Support in Julia 0.7

15:05 November 28, 2021

Python: Check if String Contains Substring

15:04 November 28, 2021

How to COALESCE in Pandas

15:03 November 28, 2021

How to Convert Strings to Integers in Pandas DataFrame

15:02 November 28, 2021

How to Check If Any Value is NaN in a Pandas DataFrame

08:58 November 26, 2021

A fresh start for R in VSCode

08:57 November 26, 2021

R and radian on macOS and VSCode

08:57 November 26, 2021

Writing R in VSCode: Interacting with an R session

11:55 November 25, 2021

How to run R in Visual Studio Code

16:14 November 18, 2021

How to use SAS on a Mac

16:12 November 18, 2021

SAS Viya REST APIs

08:13 November 18, 2021

{fusen} is now available on CRAN!

14:53 November 17, 2021

Python Try Except

12:18 November 10, 2021

Increment and Decrement operators in Python

08:55 November 2, 2021

How To Add Labels to Grouped Barplot with Bars Side-By-Side in R?

How to Annotate Bars in Grouped Barplot in Python?

12:47 October 21, 2021

SAS Problem Note 31278: Table 1 node generated by PROC REPORT

18:24 October 5, 2021

Scrape Data from PDF Files Using Python

14:14 October 5, 2021

SYSODSESCAPECHAR Automatic Macro Variable

19:20 October 1, 2021

How To Loop Through Files in a Directory

12:44 September 30, 2021

Decorators in R

13:27 September 29, 2021

R for Loop

13:36 September 27, 2021

Open Source from SAS Software

19:10 September 26, 2021

Statistics with Julia From the Ground Up

09:13 September 22, 2021

Metaprogramming workshop at JuliaCon 2021

14:24 September 20, 2021

How to automate emails using SAS

14:03 August 26, 2021

Using SYSTASK and SAS macro loops for massively parallel processing

21:31 August 24, 2021

SASPy Examples

21:30 August 24, 2021

SASPy Documentation

21:29 August 24, 2021

SASPy

21:27 August 24, 2021

SAS Python Procedure

10:58 August 23, 2021

Using the Hash Object to Store and Retrieve Data in SAS

18:18 August 22, 2021

Linear Regression in Python

18:27 August 17, 2021

How to Grep for Multiple Strings, Patterns or Words

18:27 August 17, 2021

How to Sort Output of ā€˜lsā€™ Command By Last Modified Date and Time

12:45 August 16, 2021

How to Overlay Plots in R -- Quick Guide with Example

11:17 August 16, 2021

JuliaCon2021 DataFrames.jl Tutorial

10:31 August 13, 2021

Sort ā€œduā€ Command by Size -- Output Largest to Smallest

10:47 August 9, 2021

Installing Julia on Ubuntu

14:12 August 4, 2021

GitHub -- sassoftware/saspy: A Python interface module to the SAS System. It works with Linux, Windows, and mainframe SAS. It supports the sas_kernel project (a Jupyter Notebook kernel for SAS) or can be used on its own.

14:10 August 4, 2021

SAS OnDemand for Academics: Working with Python, including Jupyter Notebook

09:02 August 4, 2021

The SAS/ACCESS Developer’s Corner: SUBCHAR-acteristics

09:02 August 4, 2021

JuMP | JuMP is a modeling language and supporting packages for mathematical optimization in Julia.

14:12 July 26, 2021

OpenCV-Python

10:26 July 21, 2021

Time Travel with py datatable 1.0

14:57 July 15, 2021

Get image size (width, height) with Python, OpenCV, Pillow (PIL)

14:56 July 15, 2021

Python Pandas ā€“ Stop TruncatingĀ Strings

09:32 July 15, 2021

Reading and Writing XML Files in Python

09:31 July 15, 2021

How to Use sorted() and sort() in Python

09:15 July 15, 2021

How to conditionally stop SAS code execution and gracefully terminate SAS session

09:14 July 15, 2021

How to conditionally execute SAS global statements

09:14 July 15, 2021

Using SQL for R data.frames withĀ sqldf

09:11 July 15, 2021

The Best Resources for Learning Shiny App Development

12:01 July 13, 2021

Python Pandas Series.str.strip(), lstrip() and rstrip()

08:22 July 12, 2021

Adding lines or other geoms to a plot in ggplot by calling a custom function

12:36 July 11, 2021

Indexing and selecting data using Pandas

12:34 July 11, 2021

Tips for Selecting Columns in a Pandas DataFrame

09:27 July 11, 2021

What is Spaghetti Code (And Why You Should Avoid It)

09:26 July 11, 2021

4 tricks you should know to parse date columns with Pandas read_csv()

09:26 July 11, 2021

Spyder: The Scientific Python Development Environment

13:12 July 8, 2021

Python KeyError Exceptions and How to Handle Them

18:19 July 5, 2021

Python code formatting: Tools you need and why it matters

09:04 July 5, 2021

simplevis: interactive plots with plotly::ggplotly

19:26 July 4, 2021

Passing arguments to an R script from command lines

09:31 July 3, 2021

Think of && as a stricter &

16:54 July 2, 2021

Speeding Up R Shiny ā€“ The Definitive Guide

16:48 July 2, 2021

Code performance in R: Parallelization

09:26 June 27, 2021

Create and Preview RMarkdown Documents with QBit Workspace

16:44 June 25, 2021

SQLAlchemy

14:49 June 25, 2021

Compare data frames in R

12:37 June 24, 2021

Top 5 tricks to make Matplotlib plots look better

12:36 June 24, 2021

Choosing Colormaps in Matplotlib

12:15 June 24, 2021

Rotate Tick Labels in Matplotlib

12:14 June 24, 2021

Create a grouped bar chart with Matplotlib and Pandas

12:44 June 23, 2021

Within() -- Base Rā€™s Mutate() function

16:22 June 21, 2021

How to Generate Automated PDF Documents with Python

16:58 June 15, 2021

Error Bar Plot in R-Adding Error Bars

16:49 June 11, 2021

Problem Note 41684: RTF output appears truncated when a very long text string spans multiple pages

10:53 June 11, 2021

Adding a Column to a Pandas DataFrame Based on an If-Else Condition

11:37 June 9, 2021

5 Tasks To Automate With Python

14:11 June 8, 2021

simplevis -- simple ggplot2 visualisation with less brainpower and typing

16:37 June 3, 2021

SAS analytics platform adds native support for AWS, GCP

13:57 June 3, 2021

Usage Note 64615: The SAS log displays the error “Invalid JSON in input near line XXX column XXX: Some code points did not transcode”

09:10 June 3, 2021

Working With JSON Data in Python

09:10 June 3, 2021

json.dumps() in Python

09:09 June 3, 2021

Writing to a File with Python’s print() Function

11:25 May 28, 2021

fpdf2

11:23 May 28, 2021

fpdf2 2.3.5

11:22 May 28, 2021

Musings on R

11:21 May 28, 2021

Installing & Using the SASmarkdown Package

SAS Using R Markdown (Windows)

SAS Workshops and Notes

11:18 May 28, 2021

SASweave: Literate programming using SAS

11:17 May 28, 2021

How to track the performance of your blog in R?

11:16 May 28, 2021

RPubs

11:15 May 28, 2021

The R Graph Gallery

11:13 May 28, 2021

Laying out multiple plots on a page in R

11:12 May 28, 2021

Vignette: Write & Read Multiple Excel files with purrr

11:11 May 28, 2021

A Compendium of Clean Graphs in R

11:10 May 28, 2021

wkhtmltopdf

11:09 May 28, 2021

Creating PDFs with fpdf2 and Python

11:08 May 28, 2021

Convert dataframe into PDF report in Python

11:06 May 28, 2021

Dataframe Styling using Pandas

11:05 May 28, 2021

Creating PDF Reports with Pandas, Jinja andĀ WeasyPrint

11:05 May 28, 2021

Python List sort()

11:04 May 28, 2021

Embarrassingly parallel for loops in Python

11:01 May 28, 2021

Executing Shell Commands with Python

10:52 May 28, 2021

Group and Aggregate by One or More Columns in Pandas

10:51 May 28, 2021

GroupBy in Pandas: Your Guide to Summarizing and Aggregating Data in Python

10:33 May 28, 2021

Pandas Groupby: Summarising, Aggregating, Grouping in Python

10:17 May 28, 2021

Comprehensive Guide to Grouping and Aggregating with Pandas

10:16 May 28, 2021

Customize Dates on Time Series Plots in Python Using Matplotlib

10:15 May 28, 2021

PyCharm R plugin support

10:09 May 28, 2021

tableone 0.7.10

10:08 May 28, 2021

python-docx

10:07 May 28, 2021

TableOne

10:07 May 28, 2021

5 Methods to Check for NaN values in in Python

10:06 May 28, 2021

How to use loc and iloc for selecting data in Pandas

10:05 May 28, 2021

Download Files with Python

10:04 May 28, 2021

Dask

10:03 May 28, 2021

PyTables

09:50 May 28, 2021

How to Check if a File or Directory Exists in Python

09:49 May 28, 2021

Vaex: Pandas but 1000x faster

09:03 May 27, 2021

Sample 24820: Creating a Directory Listing Using SAS for Windows

09:17 May 19, 2021

Python Data Wrangling Solutions ā€” Dynamically Creating Variables When Slicing Data Frames

13:52 May 16, 2021

How to Export Matplotlib Charts to a PDF

13:48 May 16, 2021

5 ways to apply an IF condition in Pandas DataFrame

13:45 May 16, 2021

% Macro Core -- Production Ready Macros for SAS Application Developers

13:44 May 16, 2021

How to Update All Python Packages

13:39 May 16, 2021

Using Version Control with RStudio

13:17 May 16, 2021

Create a nice looking table using R

Make Beautiful Tables with the Formattable Package

Create stylish tables in R using formattable

17:02 May 13, 2021

SASCRUNCH

15:43 May 13, 2021

Enabling the X Commands in SAS Studio Basic

15:25 May 13, 2021

Usage Note 19247: SAS Work library startup errors and how to change the Work library for temporary files to another drive on a Microsoft Windows operating system

15:24 May 13, 2021

How do I locate the SAS temporary work directory?

11:22 May 12, 2021

Matplotlib

11:17 May 12, 2021

How to download and convert CSV files for use in SAS

11:16 May 12, 2021

R to SAS

11:15 May 12, 2021

R U Graphing with SAS?

11:08 May 12, 2021

Get a List of all Column Names in Pandas DataFrame

11:07 May 12, 2021

Quick Intro to Parallel Computing in R

11:07 May 12, 2021

Comparing Dataframes In R Using Comparedf

11:05 May 12, 2021

Sharing Your Work with xaringan

11:03 May 12, 2021

ggplot2 -- Easy Way to Mix Multiple Graphs on The Same Page

11:01 May 12, 2021

Using Rtools40 on Windows

10:50 May 12, 2021

SAS Developer Home

10:48 May 12, 2021

How to Check if a File or a Directory exists in R, Python and Bash

10:46 May 12, 2021

Deleting a substring from a SAS string

10:42 May 12, 2021

Timeseries analysis in R

10:42 May 12, 2021

Code performance in R: Which part of the code is slow?

Code performance in R: How to make code faster

17:02 May 11, 2021

Making great graphs even better with ODS Graphics

17:02 May 11, 2021

SAS 9.4 ODS Graphics: Procedures Guide

17:01 May 11, 2021

How to fix common problems in output from SAS ODS Graphics procedures

17:12 May 10, 2021

Ask the Expert -- SAS Support Communities

17:05 May 10, 2021

Ask the Expert -- Webinars from SAS

09:43 May 5, 2021

Groovy : tokenize() vs split()

09:14 April 2, 2021

Advanced Bash-Scripting Guide

14:14 March 12, 2021

Using SAS with Microsoft 365 (OneDrive, Teams, and SharePoint)

14:02 March 9, 2021

SAS FINDW Function

14:00 March 9, 2021

%SYSEVALF SAS Macro Function

13:59 March 9, 2021

%DATATYP Autocall SAS Macro

10:52 March 3, 2021

Leaflet

18:43 March 2, 2021

Formatting Numeric Print Output in Java

18:42 March 2, 2021

Excel VBA ā€“ Read Data from a Closed Excel File or Workbook without Opening it

18:41 March 2, 2021

How to create stunning visualizations from scratch using Python

18:39 March 2, 2021

Office VBA Reference

13:53 January 27, 2021

Base SAS: XML, ODS, and the MARKUP Destination

13:01 January 27, 2021

SAS Usage Note 49421: A “Cannot write image” error might occur with ODS Graphics and the SAS/GRAPHĀ® Statistical Graphics (SG) procedures

10:56 December 31, 2020

SAS Usage Note 39705: Troubleshooting “Sort initialization failure” and “Sort execution failure” errors in Windows and UNIX environments

20:47 December 6, 2020

Julia Programming Language

17:17 November 28, 2020

How to get rid of page numbers in TeX/LaTeX

17:15 November 28, 2020

Script to convert Word document to PDF file in PowerShell

13:07 November 27, 2020

CALL EXECUTE made easy for SAS data-driven programming

20:24 October 20, 2020

Debugging SASUSER issues when you use SAS software

14:08 October 14, 2020

Fedora Packages of R Software

10:43 October 4, 2020

Advanced ODS Graphics: A deeper dive into item stores

11:08 September 25, 2020

Microsoft R Application Network

09:36 September 17, 2020

Why R? Foundation

09:16 September 17, 2020

Exploring Data in R

08:53 September 17, 2020

How to Explore Data: {DataExplorer} Package in R

13:44 July 13, 2020

Code Maven: Groovy

10:25 June 29, 2020

Groovy Goodness: Removing Elements From a Collection

12:32 February 25, 2020

Converting Numeric Data to Categories in R

12:31 February 25, 2020

Tables with labels in R

12:30 February 25, 2020

R for Data Science

11:26 February 25, 2020

How to add a column to a dataframe in R

11:16 February 25, 2020

4 data wrangling tasks in R for advanced beginners

22:20 February 24, 2020

How to Import Data: Reading SAS Files in R

13:02 February 17, 2020

SAS LIBNAME Statement: JSON Engine

21:42 November 16, 2019

Using SAS with Microsoft OneDrive and SharePoint Online

14:14 November 5, 2019

Creating a format which rounds to even in SAS

14:13 November 5, 2019

Rounding Formats in SAS

11:54 November 4, 2019

Using Colours in R

10:13 November 4, 2019

Ubuntu Packages for R

10:12 November 4, 2019

Tidyverse

16:24 October 18, 2019

SAS User Groups

16:22 October 18, 2019

Raw SAS

15:41 October 18, 2019

Modernising Legacy SAS SCL / AF Applications

20:02 September 6, 2019

The COALESCE function: PROC SQL compared with PROC IML

13:03 August 31, 2019

Groovy Tutorial

20:25 August 29, 2019

Create a directory structure from a path in gradle/groovy

20:23 August 29, 2019

How to set default Java version on Ubuntu / Debian

20:22 August 29, 2019

How to set default Java version inĀ Ubuntu

20:22 August 29, 2019

How to Install Apache Groovy on Ubuntu 18.04 / Ubuntu 16.04

14:30 June 8, 2019

How to install R on Windows, Mac OS X and Ubuntu

09:05 May 18, 2019

How to install PHP (7, 7.2 or 7.3) on Ubuntu

14:43 January 22, 2019

How to change your working directory for SAS with the DLGCDIR DATA step function

16:45 January 16, 2019

Working with Dates and Times Using the ISO 8601 Basic and Extended Notations

11:25 January 15, 2019

Have you created Scalable Vector Graphics with SAS?

Creating SVG (Scalable Vector Graphics) Files Using Universal Printing

14:19 December 20, 2018

Five reasons to use ODS EXCLUDE to suppress SAS output

18:58 December 10, 2018

Customizing SAS Titles and Footnotes

13:28 October 26, 2018

SAS COUNTW Function

SAS ODS EXCEL Statement

15:19 October 4, 2018

SAS Add-In 8 for Microsoft Office: Userā€™s Guide

15:28 October 2, 2018

Summary of SAS Macro Quoting Functions and the Characters They Mask

17:11 September 8, 2018

Using LIBNAME XLSX to read and write Excel files

17:50 September 3, 2018

New SAS transport format and tools available

17:09 August 10, 2018

Jurassic SAS in the BI/EBI World

17:07 August 10, 2018

Five things you (probably) donā€™t know you can do with a hash table in SAS

22:37 June 28, 2018

Summary of SAS Macro Quoting Functions and the Characters They Mask

Unquoting Text

09:58 May 28, 2018

PHP Tutorial: Dynamically Cache and Combine All CSSĀ Files

Combine & Minify CSS with PHP

10:42 May 8, 2018

Class Reference: WP_Query

10:36 May 8, 2018

CSS Styling of Tables

20:01 October 16, 2017

Using the DATA step debugger in SAS Enterprise Guide

20:00 October 16, 2017

SAS Webinars

19:59 October 16, 2017

SAS 9.4 System Options: Reference

19:55 March 21, 2017

Free and open SAS references/documentation

18:23 January 31, 2017

ODS GRAPHICS Statement

17:51 January 27, 2017

Sample 35864: Change line colors and styles for PROC SGPLOT output

Modifying a Style

SAS Focus Areas: Graphics

11:23 November 14, 2016

One informat to rule them all: Read any date into SAS

19:06 September 22, 2016

DEFINE STYLE Statement

Style Attributes and Their Values

General ODS Style Elements

Formats by Category

22:20 March 1, 2016

Michael A. Raithel

10:38 February 10, 2016

SAS trick: get the LIBNAME statement to create folders for you

10:36 February 10, 2016

Sorting data in SAS: can you skip it?

10:19 February 5, 2016

Usage Note 38339: SASĀ® file compatibility when upgrading from 32-bit to 64-bit Microsoft Windows

Usage Note 44047: Format catalogs must be converted when moving from a Microsoft Windows 32-bit operating system to a Microsoft Windows 7 64-bit operating system

The top gotchas when moving to 64-bit SAS for Windows

Migrating from 32-bit SAS to 64-bit SAS

Migrating to a 64-bit operating system: Quick pointers

Converting SAS Formats from 32-Bit to 64-Bit

Excuse Me; But, Is That a 32-Bit or a 64-Bit SAS Catalog?

Handling SAS Formats Catalogs across Versions

Proc Migrate: How to Migrate Your Data and Know Youā€™ve Done It Right!

20:41 January 30, 2016

Linguistic Sorting in SAS

12:14 November 30, 2015

Linguistic Collation in SAS Sorting

11:15 July 24, 2015

Windows XP Command-line reference A-Z

09:24 June 12, 2015

Flag an item without associating a date

Excel import from Word: Extracting data from merged cells in a Word 2010 Table using VBA

01:55 March 5, 2015

FINDSTR

17:06 December 9, 2014

LIBNAME Statement Syntax :: SAS/ACCESS 9.3 Interface to PC Files: Reference

15:17 November 14, 2014

GREP and SED with PowerShell

19:14 November 8, 2014

SQL: LIKE Condition

Pondering storage options

1st June 2011

The combination of curiosity and a little spare time had me browsing online computing technology stores recently. A spot of CD and DVD burning brought on by a flurry of Linux distribution testing reminded me of the possibility. Because I have built up a sizeable library of digital photos, ensuring that I have backups of them is something that needs doing. A 2 GB Samsung external hard drive is brought to life every now and again for that purpose but the prospect of using Blu-Ray discs has appealed to me. After all capacities of 25 GB for single layer discs and 50 GB for dual layer ones sound not inappropriate for my purposes. However, they aren’t a cheap option at the time of writing with each disc costing in the region of Ā£3-4 at one place where I was looking. The cost of BD writers themselves seems not to be so bad though with a few in the Ā£60-100 bracket; any lower than this and you could end up with a combo drive that reads Blu-Ray discs and writes to DVD’s and CD’s so a modicum of concentration is needed. As attractive as the idea might be, the cost of BD media means that I’ll wait a little while before deciding to take the plunge. The price premium at the moment is a reminder of the way that things used to be when CD and DVD writers first came on the market. It is very telling when discs come packaged in jewel cases, something that you won’t see too often with CD’s or DVD’s.

Another piece of storage excitement that hasn’t escaped me is the advent of SSD hard drives. With no moving parts like in conventional hard drives, they bring a speed boost. Concerns about their lifetimes and the numbers of read/write events per drive would stall me when it comes to storing personal data on them but using them for the likes of operating system files sounds attractive, especially with my partiality to Linux perhaps not hammering drives so much. As with any new technology, there is a price premium though a drive big enough for hosting an operating system can be acquired for less than Ā£100. As with many of my hardware purchase brainwaves, there’s no rush but this is an option that I’ll keep at the back of my mind.

Another appealing notion is the idea of getting a NAS so that files can be shared between a few computers. While I have seen prices starting at just above Ā£70 for single disk enclosures, these generally are a more expensive option than external drives and that’s before you consider the cost of any hard drives. Nevertheless, the advantages of a unit containing more than a single hard drive while operating as a print server for any compatible printer too. When you get to 4 or 5 hard drive trays, then the cost has mounted but that could be when they pay their way too. What reminded me of these was a bookazine on home networking that I recently found at a branch of WHSmith’s and their attractions are subject to the networking side of things being made to work without a drama. Once that’s out of the way, then their usefulness really does appeal.

Mulling over all these brainwaves is one thing but it doesn’t mean that the purse strings will become too loose in this age of economic constraint. In fact, pondering them may serve to staunch any impulse purchases. Sometimes, a spot of virtual shopping serves to control things rather than losing the run of oneself.

Another use for virtualisation

13th April 2008

One of the unexpected features of VMware is that you are left to set the virtual machine to use resolutions above and beyond that allowed by your own monitor and graphics card combinations. From a web development or design point of view, this is incredibly useful when you consider the sizes of the screens that come with PC’s these days: some of them make my 17′ Iiyama ProLite E431S take on the appearance of having proportions close to that of a postage stamp. While getting a bigger screen sounds a very nice idea and 24′ models are supposed to allow for excellent productivity, I plan to stick with what I have and VMware facilitates this with a top resolution of 2360 pixels by 1770 pixels when you get VMware tools set up on your guest OS; Windows XP is what I have been using with these higher resolutions. You do have to pan about a bit because you can only see part of the screen when the resolutions climb beyond your own monitor settings and it does exercise your hardware but being able to see how things look in resolutions larger than anything that you can access (1600 by 1200 is as high as it goes for me for a real machine and that belongs to my workplace) is very much worth it. It certainly allowed me to fine tune my online photo gallery, something that makes me relax a little more now that I have done the required optimisation for different screen heights.

Ditching PC Plus?

28th June 2007

When I start to lose interest in the features in a magazine that I regularly buy, then it’s a matter of time before I stop buying the magazine altogether. Such a predicament is facing PC Plus, a magazine that I been buying every month over the last ten years. The fate has already befallen titles like Web Designer, Amateur Photographer and Trail, all of which I now buy sporadically. Returning to PC Plus, I get the impression that it feels more of a lightweight these days. What Future Publishing has been doing over the last decade is add titles to its portfolio that take actually from its long established stalwart; Linux Format and .Net are two that come to mind and there are titles covering Windows Vista and computer music as well. Being a sucker for punishment, I did pick up this month’s PC Plus and the issue is as good an example of the malaise as any. Reviews, once a mainstay of the title, are now less prominent than they were. In place of comparison tests, we now find discussions of topics like hardware acceleration with some reviews mixed in. Topics such as robotics and artificial intelligence do rear their heads in feature articles and I cannot say that I have a great deal of time for such futurology. The tutorials section is still there but has been hived off into a separate mini-magazine and I am not so sure that it has escaped the lightweight revolution. All this is leading me to dump PC Plus in favour of PC Pro from Dennis Publishing. This feels reassuringly more heavyweight and, while the basic format has remained unchanged over the years, it still managed to remain fresh. Reviews, of both software and hardware, are very much in evidence and it manages to have those value-adding feature articles; this month, digital photography and rip-off Britain come under the spotlight. Add the Real Word Computing section and it all makes a good read in these times of behemoths like Microsoft, Apple and Adobe delivering new things on the technology front. I don’t know if I have changed but PC Pro does seem better than PC Plus these days.

Debian & Derivatives

21st September 2012

Debian is one of the oldest Linux distributions and has spawned many of derivatives, with Ubuntu being the most notable of the lot. It, too, has a range of ports that include one using a BSD kernel (GNU/kFreeBSD) too. Mainly though, it is the x86 and AMD64 architecture Linux variants that get the most attention.

After all, I do have something of a soft spot for Debian, mainly because it was loaded on a backup machine that was pressed into service when my main home system went belly up on me in 2009. It may attract its aficionados (and there is an administrator’s manual so that gives you an idea of who gets attracted to the OS) but that does nothing to detract from its usability based on my experience of using it. Well, Ubuntu did start from a good base when it did.

That was not to be the end of my dalliance with Debian and I still have virtual machines loaded with it today. The fact that new versions of the operating system may not come around very frequently can be an attraction that is lost on those who always want the latest software. When it comes to GNOME Shell, maintaining the same version longer than six months and wondering if favoured extensions will get updated to a new version has something going for it. Long-term support helps too, a growing trend in the world of Linux.

The changes introduced with GNOME 3 have been contentious and the Debian team has toyed with using other default desktop environments yet always returned to it regardless. Still, the range of desktop environments that you can use with Debian has expanded with both Cinnamon and KDE being options that come to mind and there are others.

As you might tell, I do have a soft spot for Debian and its focus on stability is at the heart of that. Maybe that is why so it has so many variants, like Ubuntu and Linux Mint, to name just two. Whenever a new version does appear, it may not have the latest versions of software, but there are times when experimentation needs to be tamed and it is good to know that upheaval hardly is a regular occurrence either.

More Options Based on Debian

So many other distros are based on Debian that there needs to be a list of them on here. Ubuntu and Linux Mint are the most notable of the lot, but there are many others, as you will see below. Others may fall in more specific functional listings that you can find via the sidebar.

Bodhi

An up-and-coming Ubuntu derivative that uses the Enlightenment desktop environment.

Deepin

This is another derivative of Ubuntu that is gaining favour thanks to the elegance of its desktop. That it’s essentially GNOME 3 is saying something about how GNOME Shell can be customised too.

Devuan

When Debian changed from sysvinit to systemd for managing system start-up and services, there were those who disagreed strongly with the decision. Though the Debian team did vote for this under the bonnet change, the detractors set up Devuan as an alternative downstream project that allows them to continue as they were.

Elementary OS

It has Ubuntu at its heart, but a lot of work has happened to make it feel as if that isn’t the case.

ExTix

What you have here is a Swedish respin of Deepin Linux. From the website, it appears that freedom is a concern but there needs to be more made of the reason for doing what they are doing.

Finnix

This is not a full desktop option since it contains many system utilities for maintenance and recovery. What you get on startup is a root command line with everything available to you.

Freespire

If you can forego the support that Linspire offers its customers, then this can come to you free of charge. The basis here is Ubuntu with different choices like the inclusion of Flatpak as well as a different software selection that includes the Brave browser and OnlyOffice.

Grml

This is a remix of Debian that uses the Zsh shell that runs exclusively as a live distro, either on a DC or on a USB flash drive.

Knoppix

If I recall correctly, this was the first-ever distribution to offer a Live CD version of itself and the innovation has taken off to the level that almost all of its competitors now offer the same. Its creator also writes a helpdesk column for Linux Magazine.

Kubuntu

Until the 12.04, release this was sponsored by Canonical, but that has changed with Blue Systems taking over for the 12.10 release. It remains the KDE flavour of Ubuntu despite this and that seems to remain the case for the foreseeable future.

Linux Lite

As the name suggests; thus, Ubuntu variant is suitable for older computer hardware. Also, it is based on LTS releases of Ubuntu, so there is no need to upgrade every six months either.

Linux Mint

The main distro may be based on Ubuntu, but there is a Debian-based version, LMDE, too. The latter only comes with the Cinnamon desktop environment while the former comes with Cinnamon, MATE and Xfce. My everyday choice has been the Cinnamon edition based on Ubuntu even if the Debian version has been checked out for a time as well; LMDE felt a little clunkier to me so I am staying mainstream for my purposes. All in all, Linux Mint feels far more community-oriented with less drama, which is why it gets my vote for everyday computing.

Linuxfx

One of the promises here is the running of Windows applications using Wine along with the running of Android apps. Also, the chosen desktop environment is KDE Plasma.

Lubuntu

Debian & Derivatives

The first place I ever tried Lubuntu was on a now elderly Asus Eee PC netbook. LXDE is the desktop environment choice here too and it’s very lightweight and so fits the bill for netbooks and PC’s that are getting on in years. The included software is chosen for being lightweight, so Chromium appeared instead of Firefox, but the accessibility of Ubuntu repositories meant that LibreOffice and the aforementioned Firefox never took long to appear on where I installed Lubuntu. Originally, it was an independent project but it impressed Mark Shuttleworth enough to gain official support such that new versions now appear on the same day as the main Ubuntu release itself.

LXLE

The website for this project disappeared for a while but it seems to be back again, so the entry reappears in this list. It is yet another lightweight distro for use on an ageing computer, as if Linux does not provide enough of these already. However, each has their own aesthetics so that may have something to do with the number of available options.

MX

In the first decade of the century, Warren Woodford created a distro called Mepis, but that project was discontinued in 2009. In response, members of the antiX and Mepis teams came together to create MX as a successor to Mepis. Today, the project remains active, and the latest version comes with XFCE, KDE and Fluxbox desktop environment choices. The antiX involvement adds a little extra computing efficiency too.

Netrunner

When Kubuntu existed, the need for this was lost on me, but the continued existence of this project will serve those who were left without an option after the official Ubuntu derivative. The effort is sponsored by Blue Systems.

Nitrux

Here is one of the strap lines for Nitrux: Powered by Debian, KDE Plasma and Frameworks, and AppImages. The last on the list refers to an ongoing trend for packaging applications within containers for desktop usage. All you need to do is drop the AppImage file somewhere, make it executable and run that.

Pardus

There was a time when this Turkish distro made something of a splash, but those days are gone and I even thought the project was moribund only to get corrected. As it happens, both GNOME and XFCE desktop environments are offered for your choosing.

Peppermint OS

Both Debian and Devuan form the basis for spins of this distro. XFCE is the chosen desktop environment so that should be more than usable for most.

Pop!_OS

If you buy a computer from System76, then Pop!_OS is the operating system that you get with it since the project is orchestrated by the same company. You can download installation media for other computers too and the target audience includes those working in science, technology, engineering and mathematical sectors as those who are content producers. There is a bespoke desktop environment called Cosmic in place of more commonplace options.

Q4OS

Prague appears to be the development HQ for this distro these days. For desktop environments, it has KDE but also a unique choice in the less well-known Trinity, and it has dual desktop capability. Another interesting feature is the way it runs alongside Windows. It also runs on ARM as well as x86.

Siduction

This is a packaging of software from Debian’s unstable branch, always called Sid and so the inspiration for the name of this distro. There are quarterly releases and five desktop environments are on offer, GNOME, LXDE, XFCE, KDE SC and Razor-QT. For whatever reason, there is a version with no desktop environment at all, but that might be for the sort of DIY enthusiast who enjoys the likes of Arch.

SparkyLinux

Using the testing branch of Debian, this rolling release distro comes in E17, LXDE, MATE and Razor-qt flavours. There’s also a command-line edition for those wanting to build their desktop environment instead of having it pre-packaged for them.

SpiralLinux

What you have here is a respin of Debian that uses its software repositories directly while adding a dash of added user-friendliness. It probably is for those who want to stay closer to the Debian base than Ubuntu does, yet a recent magazine review commented that Ubuntu does user-friendliness better anyway. Even so, Debian does not offer live DVD/USB images like you get here.

Ubuntu

Debian & DerivativesIt was Ubuntu that steered me into the world of full-time Linux usage after a series of Windows XP meltdowns.Ā  In contrast to earlier dalliances with Linux, all of my hardware was supported without any bother and everything seemed to work straight away. Whatever issues I faced in those early months, there seemed to be an answer in an Ubuntu forum or blog for my problem even if some needed a spot of thought when it came to their implementation.

Ubuntu Budgie

Budgie may be an upstart desktop environment, but that has not stopped an official Ubuntu spin from using it. Things look swish so it will be interesting to watch this.

Ubuntu MATE

In a sense, this is going back to how Ubuntu was before the arrival of GNOME Shell or Unity, both of which caused controversy, and it is a community effort and not one sponsored by Canonical. With Linux Mint having the MATE desktop too, you might be tempted to ask what this offers but the decision by the Linux Mint team to go exclusively for a long-term support model answers that. In contrast, the next release of Ubuntu MATE will be 14.10 so you get an intermediate release this way and in situ distro version updates should be a possibility too, another practice that the Linux Mint team reckons is undesirable. It will be interesting to see how many go for this.

Ubuntu Studio

This is a spin of Ubuntu for content creators. Here, the focus is on audio, graphics, video and photography. The main desktop is KDE but you also can add the Ubuntu Studio experience to other favours of Ubuntu, increasing the choices of desktop environment.

Voyager

This is a French project with variants based on Debian and on Ubuntu. The website has sections about gaming and ChatGPT, among other things. For English speakers, text comes up in French before converting to English; patience is needed to avoid confusion.

Xubuntu

This is a variant of Ubuntu using the Xfce desktop environment. As such, that makes it a bit lighter on computer power than the main distro would be. Having tried it a few times on various machines, it remains very usable and has a more conventional user interface too.

Zentyal

From the website, this would appear to be a mail server operating system that has a user-friendly feel to it. However, Linux Magazine has left me with the impression that its talents go beyond this and that activities like serving websites are supported. These are things that I have yet to explore with the VirtualBox instance that I have set up to see what it can do.

Zorin

This distro is mocking up its desktop environments to ape those of Windows and macOS, and is its major selling point. That’s not all, since they are selling laptops with the OS installed on them too. Additionally, enterprise management services are another product line here.

 

Privacy Policy

3rd February 2015

Introduction:

TechnologyTales.com (“TechnologyTales.com“) operates TechnologyTales.com and may operate other websites. It is TechnologyTales.com’s policy to respect your privacy regarding any information we may collect while operating our websites.

Website Visitors

Like most website operators, TechnologyTales.com collects non-personally-identifying information of the sort that web browsers and servers typically make available, such as the browser type, language preference, referring site, and the date and time of each visitor request. TechnologyTales.com’s purpose in collecting non-personally identifying information is to better understand how TechnologyTales.com’s visitors use its website. From time to time, TechnologyTales.com may release non-personally-identifying information in the aggregate, e.g., by publishing a report on trends in the usage of its website.

TechnologyTales.com also collects potentially personally-identifying information like Internet Protocol (IP) addresses for logged in users and for users leaving comments on TechnologyTales.com blogs/sites. TechnologyTales.com only discloses logged in user and commenter IP addresses under the same circumstances that it uses and discloses personally-identifying information as described below, except that commenter IP addresses and email addresses are visible and disclosed to the administrators of the blog/site where the comment was left.

Gathering of Personally-Identifying Information

Certain visitors to TechnologyTales.com’s websites choose to interact with TechnologyTales.com in ways that require TechnologyTales.com to gather personally-identifying information. The amount and type of information that TechnologyTales.com gathers depends on the nature of the interaction. For example, we ask visitors who sign up at TechnologyTales.com to provide a username and email address. Those who engage in transactions with TechnologyTales.com are asked to provide additional information, including as necessary the personal and financial information required to process those transactions. In each case, TechnologyTales.com collects such information only insofar as is necessary or appropriate to fulfill the purpose of the visitor’s interaction with TechnologyTales.com. TechnologyTales.com does not disclose personally-identifying information other than as described below. And visitors can always refuse to supply personally-identifying information, with the caveat that it may prevent them from engaging in certain website-related activities.

Aggregated Statistics

TechnologyTales.com may collect statistics about the behavior of visitors to its websites. TechnologyTales.com may display this information publicly or provide it to others. However, TechnologyTales.com does not disclose personally-identifying information other than as described below.

Protection of Certain Personally-Identifying Information

TechnologyTales.com discloses potentially personally-identifying and personally-identifying information only to those of its employees, contractors and affiliated organizations that (i) need to know that information in order to process it on TechnologyTales.com’s behalf or to provide services available at TechnologyTales.com’s websites, and (ii) that have agreed not to disclose it to others. Some of those employees, contractors and affiliated organizations may be located outside of your home country; by using TechnologyTales.com’s websites, you consent to the transfer of such information to them. TechnologyTales.com will not rent or sell potentially personally-identifying and personally-identifying information to anyone. Other than to its employees, contractors and affiliated organizations, as described above, TechnologyTales.com discloses potentially personally-identifying and personally-identifying information only in response to a subpoena, court order or other governmental request, or when TechnologyTales.com believes in good faith that disclosure is reasonably necessary to protect the property or rights of TechnologyTales.com, third parties or the public at large. If you are a registered user of an TechnologyTales.com website and have supplied your email address, TechnologyTales.com may occasionally send you an email to tell you about new features, solicit your feedback, or just keep you up to date with what’s going on with TechnologyTales.com and our products. If you send us a request (for example via email or via one of our feedback mechanisms), we reserve the right to publish it in order to help us clarify or respond to your request or to help us support other users. TechnologyTales.com takes all measures reasonably necessary to protect against the unauthorized access, use, alteration or destruction of potentially personally-identifying and personally-identifying information.

Cookies

We collect all information that is sent to us as configured within your web browser including, where available, your IP address, operating system and browser type and may use this information to report aggregate information to our advertisers and any relevant third parties. This information is stored and managed anonymously and independently from your personal details. This information is statistical data about our users’ browsing actions and patterns and does not identify any individual.

Like many other websites, we use cookies on the TechnologyTales.com to obtain information about your general Internet usage. A cookie is a small piece of data that your Internet browser stores on your hard drive and is used when you visit the site to tailor your viewing and provide you with customised information. Only the information that you provide, or your preferences while visiting a website, can be stored in a cookie. For example, TechnologyTales.com cannot determine personal details, such as your email address, unless you choose to submit them.

Business Transfers

If TechnologyTales.com, or substantially all of its assets, were acquired, or in the unlikely event that TechnologyTales.com goes out of business or enters bankruptcy, user information would be one of the assets that is transferred or acquired by a third party. You acknowledge that such transfers may occur, and that any acquirer of TechnologyTales.com may continue to use your personal information as set forth in this policy.

Your Rights

Full details of your rights set out in the relevant privacy notice provided to you, but you are entitled by law to ask for a copy of your personal information at any time. You are also entitled to ask us to correct, delete or update your personal information, to send your personal information to you or another organisation and to object to automated decision making. Where you have given us your consent to use your personal information in a particular manner, you also have the right to withdraw this consent at any time. To exercise any of your rights, or if you have any questions relating to your rights, please contact us. You should note that some of your rights may not apply as they have specific requirements and exemptions which apply to them and they may not also apply to personal information recorded and stored by us. However your right to withdraw consent or object to processing for direct marketing are absolute rights.

If you are unhappy with the way we are using your personal information you can complain to the UK Information Commissionerā€™s Office or your local data protection regulator. More information about your legal rights can be found on the Information Commissionerā€™s website. However, we are here to help and would encourage you to contact us to resolve your complaint first.

Other Websites

This website contains links to other websites. If you follow a link to any of these websites, please note that they have their own privacy policies and we do not accept any responsibility or liability for these policies.

Policy Changes

Although most changes are likely to be minor, TechnologyTales.com may change its Policy from time to time, and in TechnologyTales.com’s sole discretion. TechnologyTales.com encourages visitors to frequently check this page for any changes to its Introduction. If you have a TechnologyTales.com account, you might also receive an alert informing you of these changes. Your continued use of this site after any change in this Policy will constitute your acceptance of such change.

Setting up GNOME 3 on Arch Linux

22nd July 2011

It must have been my curiosity that drove me to exploring Arch Linux a few weeks ago. Its coming on a Linux Format DVD and a few kind words about its being a cutting edge distribution were enough to set me installing it into a VirtualBox virtual machine for a spot of investigation. In spite of warnings to the contrary, I took the path of least resistance with the installation even though I did look among the packages to see if I could select a desktop environment to be added as well. Not finding anything like GNOME in there, I left everything as defaulted and ended up with a command line interface as I suspected. The next job was to use the pacman command to add the extras that were needed to set in place a fully functioning desktop.

For this, the Arch Linux wiki is a copious source of information though it didn’t stop me doing things out of sequence. That I didn’t go about perusing it in a linear manner was part of the cause of this but you have to know which place to start first as well. As a result, I have decided to draw everything together here so that it’s all in one place and in a more sensible order even if it wasn’t the one that I followed.

The first thing to do is go adding X.org using the following command:

pacman -Syu xorg-server

The -Syu switch tells pacman to update the package list, upgrade any packages that require it and add the listed package if it isn’t in place already; that’s X.org in this case. For my testing, I added xor-xinit too. This puts that startx command in place. This is the command for adding it:

pacman -S xorg-xinit

With those in place, I’d go adding the VirtualBox Guest Additions next. GNOME Shell requires 3D capability so you need to have this done while the machine is off or when setting it up in the first place. This command will add the required VirtualBox extensions:

pacman -Syu virtualbox-guest-additions

Once that’s done, you need to edit /etc/rc.conf by adding “vboxguest vboxsf vboxvideo” within the brackets on the MODULES line and adding “rc.vboxadd” within the brackets on the DAEMONS line. On restarting everything should be available to you but the modprobe command is there for any troubleshooting.

With the above pre-work done, you can set to installing GNOME and I added the basic desktop from the gnome package and the other GNOME applications from the gnome-extra one. GDM is the login screen manager so that’s needed too and the GNOME Tweak Tool is a very handy thing to have for changing settings that you otherwise couldn’t. Here are the commands that I used to add all of these:

pacman -Syu gnome
pacman -Syu gnome-extra
pacman -Syu gdm
pacman -Syu gnome-tweak-tool

With those in place, some configuration files were edited so that a GUI was on show instead of a black screen with a command prompt, as useful as that can be. The first of these was /etc/rc.conf where “dbus” was added within the brackets on the DAEMONS line and “fuse” was added between those on the MODULES one.

Creating a file named .xinitrc in the root home area with the following line in there makes running a GNOME session from issuing a startx command:

exec ck-launch-session gnome-session

With all those in place, all that was needed to get a GNOME 3 login screen was a reboot. Arch is so pared back that I could login as root, not the safest of things to be doing so I added an account for more regular use. After that, it has been a matter of tweaking the GNOME desktop environment and adding missing applications. The bare bones installation that I allowed to happen meant that there were a surprising number of them but that isn’t hard to fix using pacman.

All of this emphasises that Arch Linux is for those who want to pick what they want from an operating system rather than having that decided for you by someone else, an approach that has something going for it with some of the decisions that make their presence felt in computing environments from time to time. There’s no doubt that this isn’t for everyone but documentation is complete enough for the minimalism not to be a problem for experienced Linux users and I certainly managed to make things work for me once I got them in the right order. Another thing in its favour is that Arch also is a rolling distribution so you don’t need have to go though the whole set up routine every six months unlike some others. So far, it does seem stable enough and even has set me to wondering if I could pop it on a real computer sometime.

Yet another useful Windows shortcut

11th December 2011

During the week, I needed to go to a client to upgrade the laptop that they’d given me for doing work for them. The cause was their migration from Windows XP to Windows 7. Office 2010 also came with the now set up and they replace the machines with new ones too. As part of doing this, they carried out upgrade training and this is when I got to learn a thing or two.

While I may have been using Windows 7 since the beta releases first were made available, I am under no illusions that I know all there is to be known about the operating system. Included among the things of which I wasn’t aware was a shortcut key combination for controlling display output from the HP laptop that I’d been given. This is the Windows key + P. This brings up a dialogue screen from which you can select the combination that you need and that includes extending the display across two different screens, such as that of the laptop and an external monitor. Going into the display properties will fine tune things such as what is the main display and the placement of the desktops; there’s no point in having Windows thinking that the external screen is to your left when in fact it is at the right.

Another interesting shortcut is the Windows key + TAB. This affects the Aero application view and repeating the combination cycles through the open applications or you can use a mouse wheel to achieve the same end. With ALT + TAB and the taskbar still about, this might appear more of a curiosity but some may still find it handy so I’ve shared it here too.

All in all, it’s best never to think that you know enough about something because there’s always something new to be learned and it’s always the smallest of things that proves to be the most helpful. With every release of Windows, that always seems to be the case and Windows 8 should not be any different, even if all the talk is about its Metro interface. A beta release is due in the spring of 2012 so we’ll have a chance to find out then. You never can stop learning about this computing business.

A little look at Windows 8

6th November 2011

It has been a little while but I have managed to set up a VirtualBox virtual machine in order to take a look at the Developer Preview of the next version of Windows, something that I and others continue to call Windows 8 though Microsoft has yet to confirm the name. When I tried the installation before, it failed on me but that may have been due to having an earlier release of VirtualBox on my machine at that time. 4.1.14 has a preset for Windows 8 and I also happened to notice that it can create virtual hard disks that can be used with competitors like VMWare, Parallels and Virtual PC too. It’s an interesting development but I am left wondering why you’d need to do that when VirtualBox runs on most platforms anyway.

To get back to Windows 8, the installation ran near enough without any intervention apart form stating the language you wanted to use, U.K. English in my case. Starting up the operating system gains you a lock screen that you need to get out of the way so you can log in. It can be dragged out of your way or you can double-click on it or use the carriage return key to get rid of it. Quite why someone thinks it’s a good extra is a little beyond me when a log in screen would suffice. Logging in gets you the new start menu or, as I prefer to think of it, screen. By default, there are a good few Metro apps installed though I decided to rid myself of most of them.

Regarding those apps, one irritation could be that there isn’t that obvious a way to switch away from them to something else. Thankfully, ALT+TAB does seem to work and it has the most instantaneous effect. Otherwise, using the Windows key or hovering over the bottom left corner of the screen to get the menu that brings up the start screen. From the PC user’s point of view, I could see this needing a little more thought because it took a little while for me to figure out what to do. Closing Metro apps isn’t an option either unless you resort to the Task Manager to do so. Microsoft appears to want to leave them open from the point at which you start them until the PC is shut down. It’s a design decision that leaves me unconvinced though, particularly when thoughts of rogue apps running riot on a system come to mind. Then, a stop button could be handy.

There is no start menu as we have come to know it anymore with the start screen replacing it. However, it is possible to limit what’s on there to the software that you use most often an rearrange panels as you’d like them to be. Apart from hosting shortcuts for starting applications, it also acts as a task switcher like the task bar in Windows 7 and there is one of those in Windows 8 too when you jump to the desktop; handily, there’s a panel for that too. Installing Firefox added a panel to the start screen so a little thought has gone into such a common situation and that’s just as well. Still, there’s more work to be done because, currently, there’s no way of changing the background colour of the start screen without resorting to a hex editor or third party tools. Still, you can pick your own picture for the lock screen so things are not all locked down on you.

A preview of IE 10 is included and, apart from the occasional artifact when displaying one of my websites, it seems to work well enough as does Windows Explorer. However, apart from these and a smattering of Metro apps, the Developer Preview does feel barer that previous versions of Windows. However, it does appear that applications like Notepad, PowerShell and the Command Prompt are on there but you need to search for these. That also means that you know about them too so I’d suggest a better way of browsing the applications that are available too. This is one of the weaknesses of Ubuntu’s Unity interface and you need to search in the Dash to find them. Just starting to type in the Metro start screen (and other screens too, it seems) in Windows does trigger the completion of a search box much like what happens in the GNOME Shell Activities screen on systems with GNOME 3. While it’s good to see good ideas being reused from elsewhere, Microsoft might do well to note that you still can browse lists of applications in GNOME 3 too.

Shutting down Windows 8 also seems to be more convoluted than is the case with Windows 7. Logging off and then powering off from the log in screen is one approach and that was my early impression from GNOME 3 too. With the latter, I later was to discover a status menu plugin that added in the option where it was accessible or that using ALT key when clicking the status menu when the plugin wouldn’t work would do what I needed. Without logging off from Windows 8, you can do a shut down using the sidebar that appears on selecting Settings from the menu that pops up on hovering near the bottom left corner of the start screen or the Start button of the task bar of the desktop. Then, look for the power icon and select what you need from the menu that clicking on this icon produces. Of course, you may find that the ALT+F4 key combination when issued while on a clean desktop is the cleanest of all.

All in all, the Developer Preview of the next release of Windows looks fairly usable. That is not to say that there aren’t things that need changing. Apart from this being an early sight of what may be coming to us Windows users, it isn’t unknown for Microsoft to roll back on a radical move to make it more palatable to the user community. After all, it has to watch how it treats the corporate market too. The strong possibility of there being alterations is one thought that needs to be shared with those who are inclined to be losing their tempers at the moment and I have comments with unpleasant language out there on the web (none of that here, please, by the way). As for me, I like to look ahead in order to be forewarned about what’s coming my way in the world of computing. What I have seen so far of the next Windows release is reassuring though there are roughnesses such as PC shutdown and Metro app switching but Microsoft cannot commit commercial suicide either so these have to be fixed. It seems that the world of Microsoft operating systems is in flux with the company’s keeping a firm eye on the world of mobile computing with tablets being a major concern. Others may disagree but I can see Windows 8 working well on conventional PC’s and that’s no bad thing.

Free Software Foundation Approved Distros

2nd November 2023

Not all software in Linux distributions necessarily is free or libre software. After all, most of us want to play MP3 files and I am as guilty of this as many. Then, some proprietary drivers are included with some of them baked into Linux kernels as well. All of this may make Linux easier to use but it will not please some. Hence, the Free Software Foundation (FSF) has a list of distros satisfying their guidelines and some of these are below.

Dragora

Simplicity is the apparent hallmark here.

Dyne:bolic

This is a free-software-compliant multimedia distro that proves that such things can be done without the use of proprietary codecs.

Guix System

It now appears that the GNU project now has its very own Linux distro built around the Guix (pronounced “geeks”) package manager and using the Guile programming language. The website and the screenshots look swish so it might be worth trying this out for real, and there may be a version using the Hurd kernel yet, though Linux-libre is the only option for now.

Hyperbola

This project is working with two bases: Linux-libre and BSD. The first is a derivative or Arch Linux that roots out so many non-free packages that you wonder if they might go too far. It also takes the long-term support approach so they do not have to adjust things every time something changes in Arch.

libreCMC

This results from the combination of two distinct projects that shared one common characteristic: use in embedded devices like routers, not for installing on PC’s. That may seem like a minority interest to me but we all have different needs.

Parabola

Here, Arch also is the basis with freedom as the byword. While the basis is a rolling distro, this is a long-term support offering.

ProteanOS

What we have here is another Linux distro that can be embedded on different devices and is kept lightweight to ensure universality.

PureOS

The social purpose hardware company Purism is involved in this effort, hence the naming. The distro itself is based on Debian and appears to be intended for a range of hardware, from phones to tablets to PC’s. Naturally, ISO installation images can be downloaded as well.

Trisquel

Think of this as Ubuntu with only Free Software included and you have the point of this distro. Given that Richard Stallman of the FSF has been known to like it, meeting that goal seems to be assured now.

Ututo

This was the first distro that the FSF rated for software freedom and hails from Argentina. Unfortunately, there appears to have been a lull in activity since 2107, so it is difficult to know if this remains viable.

  • All the views that you find expressed on here in postings and articles are mine alone and not those of any organisation with which I have any association, through work or otherwise. As regards editorial policy, whatever appears here is entirely of my own choice and not that of any other person or organisation.

  • Please note that everything you find here is copyrighted material. The content may be available to read without charge and without advertising but it is not to be reproduced without attribution. As it happens, a number of the images are sourced from stock libraries like iStockPhoto so they certainly are not for abstraction.

  • With regards to any comments left on the site, I expect them to be civil in tone of voice and reserve the right to reject any that are either inappropriate or irrelevant. Comment review is subject to automated processing as well as manual inspection but whatever is said is the sole responsibility of the individual contributor.